package com.lleice.common.configuration;

import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

/**
 * 解决雪花id返回前端精度丢失问题
 * @author lizihao
 *
 */
@Configuration
public class JacksonConfig {
	  @Bean
	  @Primary
	  @ConditionalOnMissingBean(ObjectMapper.class)
	  public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder)
	  {
	    ObjectMapper objectMapper = builder.createXmlMapper(false).build();
	    // 全局配置序列化返回 JSON 处理
	    SimpleModule simpleModule = new SimpleModule();
	    //JSON Long ==> String
	    simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
	    objectMapper.registerModule(simpleModule);
	    return objectMapper;
	  }
}
